using System; // vajag, lai vispār kaut kas strādā

class Forma
{
    static void Main()
    {
        string teksts = "ricards brauns"; // teksts ar diviem vārdiem
        string[] dalits = teksts.Split(' '); // sadalīts pa atstarpi

        string pirmais = Normalize(dalits[0]); // uztaisa 1. vārdu normāli
        string otrais = Normalize(dalits[1]); // arī otru

        Console.WriteLine("vārds: " + pirmais); // rāda vienu
        Console.WriteLine("uzvārds: " + otrais); // rāda otru

        int minKol = 5; // vismaz tik kolonnas
        int minRind = 5; // vismaz tik rindas

        int kol = Ievade("Cik kolonnas? (>=" + minKol + "): ", minKol); // ievade kolonnām
        int rind = Ievade("Cik rindas? (>=" + minRind + "): ", minRind); // ievade rindām

        Console.WriteLine(); // tukšums pirms tabulas
        ZimeTabulu(rind, kol); // palaid zīmēšanu
    }

    static string Normalize(string teksts)
    {
        if (string.IsNullOrWhiteSpace(teksts)) return ""; // neko nedari ar tukšu
        string a = teksts.Substring(0, 1).ToUpper(); // paņem 1. burtu lielu
        string b = teksts.Substring(1).ToLower(); // pārējos mazus
        return a + b; // salīmē
    }

    static int Ievade(string info, int minimums)
    {
        int x;
        Console.Write(info); // jautā cilvēkam
        while (!int.TryParse(Console.ReadLine(), out x) || x < minimums) // pārbauda
            Console.Write("Mēģini vēlreiz (min: " + minimums + "): ");
        return x; // atgriež OK ciparu
    }

    static void ZimeTabulu(int rindas, int kolonnas)
    {
        int p = 3; // cik plata šūna

        for (int i = 0; i < rindas; i++) // ej pa rindām
        {
            int daudz = i < kolonnas ? i + 1 : kolonnas; // cik skaitļi būs
            int noKur = i < kolonnas ? 1 : i - kolonnas + 2; // sākuma skaitlis

            int atstarpe = (kolonnas - daudz) * (p + 1); // cik liek pa labi
            Console.Write(new string(' ', atstarpe)); // pielāgošanu pa kreisi

            Console.Write("+");
            for (int j = 0; j < daudz; j++) Console.Write(new string('-', p) + "+"); // līnija virsū
            Console.WriteLine();

            Console.Write(new string(' ', atstarpe)); // atkārto atstarpi
            Console.Write("|");
            for (int j = 0; j < daudz; j++) Console.Write((noKur + j).ToString().PadLeft(p) + "|"); // cipari iekšā
            Console.WriteLine();
        }

        int apaksa = Math.Min(rindas, kolonnas); // cik pēdējā rinda
        int space = (kolonnas - apaksa) * (p + 1); // atstarpe pēdējai

        Console.Write(new string(' ', space)); // izvada beigu maliņu
        Console.Write("+");
        for (int z = 0; z < apaksa; z++) Console.Write(new string('-', p) + "+"); // pēdējā līnija
        Console.WriteLine();
    }
}
